In conventional systems, when arbitrating access to a shared resource, several priority classes are typically defined, and access to the resource is based on these priority classes. Priority classes are assigned to resource access requests based on how critical the request to access the resource is.
In a computer, for example, numerous resources, such as the processor, memory, disk space, and bus bandwidth, are all accessed by one or more components of the computer, and hence are shared resources. These components can be hardware, software or both. Depending on, the circumstances, each component can require a different priority class for accessing a shared resource.
One of the problems, in an arbitration scheme in which priority classes are defined and resource access is allowed in order of descending priority, as in conventional systems, is for higher priority requests to monopolize a resource to the extent that lower priority requests are ‘locked out’, i.e., prevented from accessing the resource for an extended period of time.
Therefore, there is a need for an improved method of resource arbitration.